package com.su.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import net.sf.json.JSONObject;

import org.springframework.stereotype.Service;

import com.su.tools.DaoSupport1;
import com.su.tools.PageData;
import com.su.util.UuidUtil;

@Service("sysItemService")
public class SysItemService {
	@Resource(name = "daoSupport1")
	private DaoSupport1 dao;
	private JSONObject json = new JSONObject();
	private PageData retPd;
	private List<PageData> retListPd;
	public JSONObject invoke(PageData pd) throws Exception {
		//
		
		String pa = pd.getString("params");
		
		if(pd.getString("params").equals("GITL01")){
			this.GITL01(pd);
		} else if(pd.getString("params").equals("GILP01")){
			this.GILP01(pd);
		} else if(pd.getString("params").equals("GSI01")){
			this.GSI01(pd);
		} else if(pd.getString("params").equals("API01")){
			this.API01(pd);
		} else{		
			json.put("code","100");
			json.put("msg", "没有找到该业务代码");
			return json;
		}
		return json;
	}
	
	
	private void API01(PageData pd) {
		try {
			PageData puser =  (PageData)pd.getRequest().getSession().getAttribute("portalUser");
			if(puser!=null){
				PageData userPd =dao.getOne("ApplyUserMapper.getPortalUser",puser);
				if(!userPd.checkValue("NAME") || !userPd.checkValue("SEX") || !userPd.checkValue("MARRIAGE") 
						|| !userPd.checkValue("ID_NUMBER") || !userPd.checkValue("BIRTHDAY") || !userPd.checkValue("HEIGHT")
						 || !userPd.checkValue("WEIGHT") || !userPd.checkValue("PROVINCE") || !userPd.checkValue("CITY")
						 || !userPd.checkValue("ADDRESS")){
					json.put("state", "600");
					json.put("msg", "请完善个人信息");
					json.put("data", "");					
				}else{
					Date d = new Date();
			        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			        String dateNow = sdf.format(d);
			        pd.put("CREATE_DATE", dateNow);				
					String userCode = puser.getString("CODE");
					if(!"".equals(userCode)){
						pd.put("USER_CODE", userCode);
						
						retPd =dao.getOne("SysItemMapper.existApplyUserItem",pd);
						
						if(retPd==null || Integer.parseInt(retPd.get("COUNT").toString())>0){
							json.put("state", "300");
							json.put("msg", "当前用户已申请过该项目不能重复申请");
							json.put("data", "");
						}else{
							
							
							PageData retPdss =dao.getOne("SysItemMapper.getCurrentItemStatus",pd);
							if(retPdss!=null && retPdss.get("STATUS").toString().equals("4")){
								json.put("state", "100");
								json.put("msg", "该项目已招满,请查看是否有其他适合项目");
								json.put("data", "");
							}else{
								int	rows=dao.insert("SysItemMapper.insertApplyUserItem",pd);
								if(rows>0){
									json.put("state", "200");
									json.put("msg", "申请成功");
									json.put("data", "");
								}else{
									json.put("state", "404");
									json.put("msg", "申请失败");
									json.put("data", "");
								}
							}
						}
					}else{
						json.put("state", "404");
						json.put("msg", "申请失败");
						json.put("data", "");
					}
				}
			}else{
				json.put("state", "404");
				json.put("msg", "申请失败");
				json.put("data", "");
			}			
		} catch (Exception e) {			
			json.put("state", "500");
			json.put("msg", "申请失败");
			json.put("data", "");
		}
	}
	
	
	private void GSI01(PageData pd) {
		try {
			retPd=dao.getOne("SysItemMapper.getSingleItem", pd);						
			if(retPd!=null && retPd.size()>0 ){
				json.put("state", "200");
				json.put("msg", "查询成功");
				json.put("data", retPd);	
			}else{
				json.put("state", "404");
				json.put("msg", "查询失败");
				json.put("data", "");
			}			
		} catch (Exception e) {			
			json.put("state", "500");
			json.put("msg", "查询失败");
			json.put("data", "");
		}
	}
	
	private void GILP01(PageData pd) {
		try {		
			
			Date d = new Date();
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	        String dateNow = sdf.format(d);
	        pd.put("dateNow", dateNow);
			
			retListPd =dao.getList("SysItemMapper.getItemListByPage", pd);
			retPd=dao.getOne("SysItemMapper.getItemListTotalCount", pd);			
			String totalCount = retPd.get("COUNT").toString();					
			if(retListPd!=null && retListPd.size()>0 ){
				json.put("state", "200");
				json.put("msg", "查询成功");
				json.put("data", retListPd);	
				json.put("totalCount", totalCount);
			}else{
				json.put("state", "404");
				json.put("msg", "查询失败");
				json.put("data", "");
			}			
		} catch (Exception e) {			
			json.put("state", "500");
			json.put("msg", "查询失败");
			json.put("data", "");
		}
	}
	
	private void GITL01(PageData pd) {
		try {			
			retListPd =dao.getList("SysItemMapper.getPartItemList", pd);
			if(retListPd!=null && retListPd.size()>0 ){
				json.put("state", "200");
				json.put("msg", "查询成功");
				json.put("data", retListPd);				
			}else{
				json.put("state", "404");
				json.put("msg", "查询失败");
				json.put("data", "");
			}			
		} catch (Exception e) {			
			json.put("state", "500");
			json.put("msg", "不存在当前用户");
			json.put("data", "");
		}
	}	
}
